package com.demo.java.OD1_50.OD1;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 猴子爬山或上N阶台阶问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145495592
 */
public class test1 {

    // 定义一个递归方法，计算跳到第 'step' 级台阶的不同跳法数
    private static int getCount(int step) {
        // 当台阶数小于3时，只有一种跳法（跳1步）
        if (step < 3) {
            return 1;
        }
        // 否则，跳法数等于跳1步加上跳3步的跳法数
        // 即从当前台阶跳1步到达step-1级台阶，或者从当前台阶跳3步到达step-3级台阶
        return getCount(step - 1) + getCount(step - 3);
    }

    // 主方法，用于输入台阶数并输出不同的跳法数
    public static void main(String[] args) {
        // 使用 try-with-resources 语法，确保 Scanner 资源被正确关闭
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("请输入台阶数: ");
            if (scanner.hasNextInt()) {
                int input = scanner.nextInt();
                if (input < 0) {
                    System.out.println("台阶数不能为负数！");
                } else {
                    System.out.println("跳法总数：" + getCount(input));
                }
            } else {
                System.out.println("输入无效，请输入一个整数！");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}



